<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../../../resources/js-test.js"></script>
</head>
<body onload="runTest();">

<input id="input" type="text" value="editable text"><br>
<span id="plain">This is plain text with no handler</span><br>
<span id="consumes">This text consumes events using preventDefault()</span><br><br>
Clicking or tapping on the "consumes" section should have no effect on the selection,
but clicking in the plain section should clear it.

<p id="description"></p>
<div id="console"></div>

<script>
var plainResult = null;
var consumesResult = null;

function plainCallback() {
}

function consumeCallback(event) {
    event.preventDefault();
}

function runTest() {
    document.getElementById('input').select();
    var consumes = document.getElementById('consumes');
    consumes.addEventListener("mousedown", consumeCallback, false);
    var plain = document.getElementById('plain');
    plain.addEventListener("mousedown", plainCallback, false);

    if (window.testRunner) {
        testRunner.dumpAsText();
    }

    if (window.eventSender) {
        description("This tests Tap events being consumed by a handler.");

        // A 'tap' gesture event should generate a sequence of mouse events,
        // which do not affect the selection when consumed.
        var consumesRect = document.getElementById('consumes').getBoundingClientRect();
        consumesResult = eventSender.gestureTap(consumesRect.left, consumesRect.top);
        shouldBe('consumesResult', 'true');
        shouldNotBe('window.getSelection().toString()', '');

        // Tapping on plain text does not consume the event, and clears the selection.
        var plainRect = document.getElementById('plain').getBoundingClientRect();
        plainResult = eventSender.gestureTap(plainRect.left, plainRect.top);
        shouldBe('plainResult', 'false');
        shouldBeEmptyString('window.getSelection().toString()');
    } else {
        debug("This test requires DumpRenderTree.  Tap on the text to log.")
    }
}
</script>
</body>
</html>
